﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Intelsi.Entity;

namespace Intelsi.DataAcces
{
    public class TrabajadorDAO: MasterDataAccess , ITrabajadorDAO
    {
        public List<Trabajador> GetAllFromTrabajador()
        {
            var query = from p in Context.Trabajadors
                        orderby p.IdTrabajador
                        select p;

            return query.Skip(1).Take(10).ToList();
        }

        public Trabajador GetFromTrabajadorById(int id)
        {
            return Context.Trabajadors.Find(id);
        }

        public void AddTrabajador(Trabajador trabajador)
        {


         
            var existe1 = trabajador.IdTrabajador == 0;


            if (existe1 == true)
            {
                trabajador.Ape_Nomb = trabajador.Ape_Nomb;
                trabajador.Cargo = trabajador.Cargo;
                trabajador.Celular = trabajador.Celular;
                trabajador.emailCorp = trabajador.emailCorp;
                trabajador.emailPriv = trabajador.emailPriv;
                trabajador.Foto = trabajador.Foto;
                trabajador.NumFotocheck = trabajador.NumFotocheck;
                trabajador.DNI = trabajador.DNI;
                trabajador.Estado = trabajador.Estado;
                trabajador.Direccion = trabajador.Direccion;
                trabajador.TelFijo = trabajador.TelFijo;
                trabajador.Contraseña = trabajador.Contraseña;
                

                Context.Trabajadors.Add(trabajador);
                Context.SaveChanges();
            
            }

            //Context.Trabajadors.Add(trabajador);
            //Context.SaveChanges();
            //trabajador.AcceptChanges();
            
        }


        public void Actualizartrabajador(Trabajador trabajador)
        {

            var existe = (from s in Context.Trabajadors
                          where s.IdTrabajador == trabajador.IdTrabajador
                          select s).SingleOrDefault();

            if (existe != null)
            {

                existe.Ape_Nomb = trabajador.Ape_Nomb;
                existe.Cargo = trabajador.Cargo;
                existe.Celular = trabajador.Celular;
                existe.emailCorp = trabajador.emailCorp;
                existe.emailPriv = trabajador.emailPriv;
                existe.Foto = trabajador.Foto;
                existe.NumFotocheck = trabajador.NumFotocheck;
                existe.DNI = trabajador.DNI;
                existe.Estado = trabajador.Estado;
                existe.Direccion = trabajador.Direccion;
                existe.TelFijo = trabajador.TelFijo;
                existe.Contraseña = trabajador.Contraseña;
              

                Context.Entry(existe).State = System.Data.EntityState.Modified;
                Context.SaveChanges();
            }

           
        }

        public List<Trabajador> GetFromTrabajadorByNombre(string nombre)
        {
            var query = from t in Context.Trabajadors
                       
                        select t;

            if (nombre != null   )
            {
                query = query.Where(t => t.Ape_Nomb.ToUpper().Contains(nombre.ToUpper()) ||
                                                   t.Ape_Nomb.ToUpper().StartsWith(nombre.ToUpper())
                               );
            }
           

            return query.ToList();

        }


        public byte[] GetFotoTrabajadorById(int id)
        {
            var query = from c in Context.Trabajadors
                        where c.IdTrabajador == id
                        select c.Foto;

            return query.SingleOrDefault();
        }


        public Trabajador GetFromTrabajadorByCorreoCorporativo(string correo)
        {
            var query = from t in Context.Trabajadors
                        where t.emailCorp == correo
                        select t;

            var trabajador = query.SingleOrDefault();

            return trabajador;
        }
    }
}
